################################################################################
# Check the required variables, such as BUILD_ROOT, TT_ROOT, and ENV_ROOT.
################################################################################

ifndef BUILD_ROOT
$(error Variable BUILD_ROOT was not defined.)
endif

ifndef APP_ROOT
$(error Variable APP_ROOT was not defined.)
endif

################################################################################
# Setup any build related flags, such as CC, AS, LDFLAGS, CFLAGS etc.
################################################################################

CFLAGS	:= -I$(APP_ROOT) $(CFLAGS) -g -O2 \
	   -DTT_NUM_MESSAGES=100 \
#-DTT_WCET_MEASURE=1

################################################################################
# Setup the rules for building the required object files from the source.
################################################################################

$(BUILD_ROOT)/main.o: $(APP_ROOT)/main.c
	$(CC) $(CFLAGS) $< -c -o $@

$(BUILD_ROOT)/test0.o: $(APP_ROOT)/test0.c
	$(CC) $(CFLAGS) $< -c -o $@

$(BUILD_ROOT)/test1.o: $(APP_ROOT)/test1.c
	$(CC) $(CFLAGS) $< -c -o $@

$(BUILD_ROOT)/test2.o: $(APP_ROOT)/test2.c
	$(CC) $(CFLAGS) $< -c -o $@

$(BUILD_ROOT)/test3.o: $(APP_ROOT)/test3.c
	$(CC) $(CFLAGS) $< -c -o $@

$(BUILD_ROOT)/timerQ.o: $(APP_ROOT)/timerQ.c
	$(CC) $(CFLAGS) $< -c -o $@

$(BUILD_ROOT)/test-method-entry.o: $(APP_ROOT)/test-method-entry.c
	$(CC) $(CFLAGS) $< -c -o $@

################################################################################
# Setup the required objects for the application sources.
################################################################################

#APP_OBJECTS	:= $(BUILD_ROOT)/main.o
#APP_OBJECTS	:= $(BUILD_ROOT)/test0.o
#APP_OBJECTS	:= $(BUILD_ROOT)/test1.o
#APP_OBJECTS	:= $(BUILD_ROOT)/test2.o
APP_OBJECTS	:= $(BUILD_ROOT)/test3.o
#APP_OBJECTS	:= $(BUILD_ROOT)/timerQ.o
#APP_OBJECTS	:= $(BUILD_ROOT)/test-method-entry.o

################################################################################
# Last but not the least we define the binary output of the application.
################################################################################

APP_BINARY	:= $(BUILD_ROOT)/app.elf
